jenkins-faq
jenkins-faq
Workflow &Airflow
1、jenskins属于workflow。(但基本工程软件领域,jenbkins已经足够了)2、Airflow:适用于机器学习领域,pythn写的,可支持几百个或上千个阶段。
jenkins里报错排查方法
- 错误代码
- 正确代码(这里是没逗号的。)
- 看这里就行
jenkins使用公共账号去拉代码
jar包命名规范
JsonPath语法文档
注意:之前在agent web上配置的参数就是这里的config.xml 内容
如果直接修改agent这里的
config.xml
内容的话,那么也是可以的,但是要记得reload一下,不然不会生效web界面查看当前配置的数值是5
- 我们来直接修改下这个节点的配置文件
[root@Devops6 build01]#vim /data/devops6/jenkins_home/nodes/build01/config.xml将<numExecutors>5</numExecutors>改成<numExecutors>6</numExecutors>
- 配置完,我们刷新下浏览器,测试依然为5个触发器
- 此时,我们reload一下jenkins,再次观察下效果
可以看到,这里的触发器数量变成6个了,符合预期。
Jenkins高可用
通过HA proxy来创建多个jenkins,但最后会发现有一个问题:2个Jenkins读的数据是不能同时加载的。也就是说这个本地数据目录只支持一个Jenkins。
后来我们做的方式,比如这个Jenkins挂了,那么另外一个jenbkins会reload一下这个数据,那么就可以拿到这个数据了。
但是,现在也没必要做Jenkins高可用了,直接把它放在k8s里,出了问题,它会直接给你启动。
高可用还有一种情况,就是我们把agent给忽略掉。你可以理解为Jenkins就没有agent。比如起一个任务,我们就给他起一个jebnkins master,然后去构建这个任务。这也是一种调度的实践方式吧。那这样子的话,jenkins也不需要去存储它的数据了。
还有一种,就是把jenkins所有配置放在自己的平台上面。把jenkins做成无状态的,它挂了也无所谓。重新启动就可以,只把它作为一个引擎,只让它去运行任务就可以了。所有的数据都在外面存储。
所以说,还是它存储这一块不太给力,如果它有数据库的话,可能会更好一些。
Jenkins更新最佳实践
最佳实践:
在企业里,我们会对Jenkins做版本管理。Jenkins有个
configAsCode
这个插件,它可以支持你通过一个类似于yaml文件,启动的时候,它会按照yaml文件里定义的内容去做一些配置。我们没用这种方式,我们直接用的是一个dockerfile,直接建的那个repo,会定时的去打这样一个镜像。需要哪些插件,我就会写到这个插件目录,然后build一个镜像。直接去启这个镜像。
因为configAsCode这个插件有时候会出现一些问题,比如说加载的问题,还有一个就是你在启动的时候,它会应用这些配置,有可能会导致启动失败。
所以,我们干脆打成docker镜像,经过测试之后,直接用这个镜像去起master,去更新就可以了。
这也是关于jenkins更新的一个实践。
范例:如何取消被卡主的job呢?
这里输入kill就好:
点击Retry using POST
:
可以看到:job被取消了
Q:为什么关闭默认的checkout, 默认的checkout有什么问题吗
默认的checkout不会判断项目,只根据git地址下载。建议还是skip它。
Q:老师,jenkins的In-process Script Approval是干嘛用的。每次我执行都让我确认
这个是jenkins的安全限制,防止一些高危的代码执行。但是后台可以审批通过后就可以执行了。
(这个自己还没遇见过哦……)